package com.mall.module.product.service;

import com.github.pagehelper.PageInfo;
import com.mall.module.product.domain.dto.ProductCategoryDTO;
import com.mall.module.product.domain.vo.ProductCategoryVO;
import java.util.List;

/**
 * 商品分类服务接口
 */
public interface ProductCategoryService {

    /**
     * 分页查询商品分类
     * @param pageNum 当前页码
     * @param pageSize 每页数量
     * @param name 名称(模糊查询)
     * @param status 状态
     * @return 分页结果
     */
    PageInfo<ProductCategoryVO> page(int pageNum, int pageSize, String name, Integer status);

    /**
     * 获取树形结构
     * @param parentId 父分类ID (为null时查询所有)
     * @return 树形结构
     */
    List<ProductCategoryVO> tree(Long parentId);

    /**
     * 根据ID获取详情
     * @param id 主键
     * @return 详情
     */
    ProductCategoryVO getDetail(Long id);

    /**
     * 新增商品分类
     * @param dto 商品分类DTO
     * @return 新增记录的ID
     */
    Long add(ProductCategoryDTO dto);

    /**
     * 修改商品分类
     * @param dto 商品分类DTO
     */
    void update(ProductCategoryDTO dto);

    /**
     * 删除商品分类
     * @param id 主键
     */
    void delete(Long id);

    /**
     * 批量删除商品分类
     * @param ids ID集合
     */
    void batchDelete(List<Long> ids);

    /**
     * 批量修改状态
     * @param ids ID集合
     * @param status 状态
     */
    void batchUpdateStatus(List<Long> ids, Integer status);
}